﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ClassWork22Jan
{
    class Program
    {
        static void Main(string[] args)
        {
            string ch;
            do
            { 
            Console.WriteLine("Введите номер задачи");
            int variant = Int32.Parse(Console.ReadLine());
                switch (variant)
                {
                    case 1:
                        DoFirstTask();
                        break;
                    case 2:
                        DoSecondTask();
                        break;
                    case 3:
                        DoThirdTask();
                        break;
                    case 4:
                        DoFourthTask();
                        break;
                    case 5:
                        int length = 5;
                        int height = 5;
                        char ag = '*';
                        DoFifthTask(length, height, ag);                       
                        break;
                    case 6:
                        int size = 5;
                        int []myArray = CreateArray(size);
                        PrintArrayToConsole(myArray);
                        Console.ReadLine();
                        CountOddAndEven(myArray);
                        CountMinMax(myArray);
                        break;            
                    default:
                        Console.WriteLine("Вы ввели неверное число, такой задачи не существует");
                        Console.ReadLine();
                        break;
                }
                Console.WriteLine("wanna continue? Y/N");
                ch = Console.ReadLine();
                ch = ch.ToLower();
            }
            while (ch == "y"); ;
        }
        static void DoFirstTask()
        {
            //Пользователь вводит целое число из консоли. Увеличить число на 10 и вывести на экран.
            Console.WriteLine("Введите целое число");
            int number = Int32.Parse(Console.ReadLine());
            number = number + 10;
            Console.WriteLine("Ваше число увеличилось на 10 и теперь его величина: {0}", number);
            Console.ReadLine();
        }

        static void DoSecondTask()
        {
            // Найти сумму ряда чисел от 1 до n. n - целое положительное число вводиться пользователем в консоли. 
            //Если n -не удовлетворяет условию -вывести сообщение об ошибке.
            Console.WriteLine("Введите целое положительное число");
            int numberN = Int32.Parse(Console.ReadLine());
            int summ = 0;
            if (numberN > 0)
            {
                for (int i = 1; i <= numberN; i++)
                {
                    summ = summ + i;
                }
                Console.WriteLine("Сумма ряда чисел от 1 до введенного вами : {0}", summ);
            }
            else
            {
                Console.WriteLine("Ваше число является отрицательным. Введите положительное число");
            }
            Console.ReadLine();
        }

        static void DoThirdTask()
        {
            //Пользователь из консоли вводит координаты x и y двух точек.
            //Найти расстояние по прямой между этими точками.
            Console.WriteLine("Введите координату Х первой точки");
            double coordinateX = Int32.Parse(Console.ReadLine());
            Console.WriteLine("Введите координату Y первой точки");
            double coordinateY = Int32.Parse(Console.ReadLine());
            Console.WriteLine("Введите координату Х второй точки");
            double coordinateXSecond = Int32.Parse(Console.ReadLine());
            Console.WriteLine("Введите координату Y второй точки");
            double coordinateYSecond = Int32.Parse(Console.ReadLine());     
            double distance;
            double distanceY;
            double gipot = 0;
            distance = coordinateXSecond - coordinateX;
                Console.WriteLine("Расстояние между точками Х равно: {0}", distance);
            distanceY = coordinateYSecond - coordinateY;
                Console.WriteLine("Расстояние между точками Х равно: {0}", distanceY);
                gipot = (distance*distance) + (distanceY*distanceY);
                double lenth = Math.Sqrt(gipot);
            Console.WriteLine("Расстояние равно: {0}", lenth);
        }


        static void DoFourthTask()
        {
            //Пользователь из консоли вводит координаты x и y точки.Определить какой четверти принадлежит точка.
            //Обработать результат когда точка имеет координаты 0.0
            Console.WriteLine("Введите координату Х точки");
            int coordinateX = Int32.Parse(Console.ReadLine());
            Console.WriteLine("Введите координату Y  точки");
            int coordinateY = Int32.Parse(Console.ReadLine());

            if (coordinateX < 0)
            {
                if (coordinateY < 0)
                {
                    Console.WriteLine("Точка лежит в третьей четверти");
                }
                else
                {
                    Console.WriteLine("Точка лежит во второй четверти");
                }
            }            
            else if (coordinateX == 0)
            {
                if (coordinateY != 0 && coordinateY > 0 )
                {
                    Console.WriteLine("Ваша точка принадлежит четвертям 1 и 2");
                }
                else if (coordinateY != 0 && coordinateY < 0)
                    Console.WriteLine("Ваша точка принадлежит четвертям 3 и 4");
                else
                {
                    Console.WriteLine("Ваша точка лежит вот прям на пересечении осей, её значения нулевые");
                }
            }
            else if (coordinateY == 0)
            {
                if (coordinateX != 0 && coordinateX > 0)
                {
                    Console.WriteLine("Ваша точка принадлежит четвертям 1 и 4");
                }
                else if (coordinateX != 0 && coordinateX < 0)
                    Console.WriteLine("Ваша точка принадлежит четвертям 3 и 2");
                else
                {
                    Console.WriteLine("Ваша точка лежит вот прям на пересечении осей, её значения нулевые");
                }
            }
            else 
            {
                if ( coordinateY < 0)
                {
                    Console.WriteLine("Точка лежит в четвертой четверти");
                }
                else
                {
                    Console.WriteLine("Точка лежит в первой четверти");
                }
            }
        }
       
        static void DoFifthTask(int length, int height, char ag)     
        {
            for (int i = 1; i <= height; i++)
            {
                for (int j = 1; j <= length;  j++)
                {
                    if (j == 1)
                    {                                             
                        Console.Write(ag);                      
                    }
                        
                    if (j == length)
                    {
                        Console.WriteLine(ag);
                    }

                    if (i!= 1 && j!=1 && i!=height && j!=length )
                    {
                        Console.Write(' ');
                    }

                    if (i == 1 && j!=1 && j!=length)
                    {
                        Console.Write(ag);
                    }
                    if (i == height && j != 1 && j != length)
                    {
                        Console.Write(ag);
                    }
                }
            }

        }

       public static int[] CreateArray(int size)
        {
            //Реализовать метод который создает и возвращает одномерный массив 
            //целочисленных значений и заполняет его случайными числами в диапазоне от 1 до 1000.
            //Размер массива указывается во входящем параметре метода.           
            int[] newArray = new int[size];
            Random rnd = new Random();
            for (int i = 0; i < size; i++)
            {
                newArray[i] = rnd.Next(100);
            }
            return newArray;
        }
       public static void PrintArrayToConsole(int[] arrayForPrinting)
        {
            for (int j = 0; j < arrayForPrinting.GetLength(0); j++)
            {
                Console.Write("{0}\t", arrayForPrinting[j]);
            }
            Console.WriteLine();
        }
     
            //Вывести элементы массива на экран.
            //Посчитать количество четных и нечетных элементов. 
            //Для создания массива воспользоваться методом из предыдущего задания.
            //Размер массива 5
         public static void CountOddAndEven (int [] myArray)
        {
            int evenNumbersCount = 0;
            int oddNumbersCount = 0;
            for (int i = 0; i < myArray.GetLength(0); i++)
            {
                if (myArray[i] % 2 == 0)
                {
                    evenNumbersCount++;
                }
                else
                {
                    oddNumbersCount++;
                }
            }
            Console.WriteLine("Количество четных чисел: {0} ", evenNumbersCount);
            Console.WriteLine("Количество нечетных чисел: {0}", oddNumbersCount);
        }

        //Вывести массив на экран, найти позицию первого вхождения минимального и максимального элемента, 
        // а так же общее кол-во вхождений минимального и максимального элементов в массив

        public static void CountMinMax(int[] myArray)
        {
            int indexMaxVal;
            int indexMinVal;
            int counterMin = 0;
            int counterMax = 0;
            int maxValue = 0;
            int minValue = 0;                       
                maxValue = myArray.Max<int>();
                minValue = myArray.Min<int>();          
            indexMaxVal = Array.IndexOf(myArray, maxValue);
            indexMinVal = Array.IndexOf(myArray, minValue);
            Console.WriteLine("Максимальное значение и его индекс: {0}, {1}", maxValue, indexMaxVal);
            Console.WriteLine("Минимальное значение и его индекс: {0}, {1}", minValue,indexMinVal);
            for (int i = 0; i < myArray.GetLength(0); i++)
            {
                if (minValue == myArray[i])
                {
                    counterMin++;
                }
                if(maxValue == myArray[i])
                {
                    counterMax++;
                }
            }
            Console.WriteLine("Количество вхождения минимальных чисел : {0}",counterMin);
            Console.WriteLine("Количество вхождений максимальных чисел : {0}", counterMax);              
        }
    }
}
